package com.mo.axion.common.domain;

import com.mo.axion.common.dto.model.ContentModel;
import com.mo.axion.common.pipeline.ProcessModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Set;

/**
 * @author Mo
 * @createTime 2024/2/1 18:01
 * @description 发送任务信息
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TaskInfo implements Serializable, ProcessModel {
    /**
     * 业务消息发送Id，用于链路追踪，若不存在使用messageId 详见参数组装模块
     */
    private String bizId;
    /**
     * 消息唯一Id（数据追踪）
     * 生成逻辑参考TaskInfoUtils
     */
    private String messageId;
    /**
     * 消息模板Id
     */
    private Long messageTemplateId;

    /**
     * 业务Id（数据追踪）
     */
    private Long businessId;

    /**
     * 接收者
     */
    private Set<String> receiver;

    /**
     * 发送的Id类型
     */
    private Integer idType;
    /**
     * 模板类型
     */
    private Integer templateType;

    /**
     * 发送渠道
     */
    private Integer sendChannel;

    /**
     * 消息类型
     */
    private Integer msgType;

    /**
     * 屏蔽类型
     */
    private Integer shieldType;

    /**
     * 发送文案模型
     * message_template表存储的content是JSON格式
     * 不同下发渠道发送的内容不一样
     * 所以 用抽象类ContentModel抽象
     */
    private ContentModel contentModel;

    /**
     * 发送账号（邮件下可有多个发送账号，短信可有多个发送账号）
     */
    private Integer sendAccount;
}
